package com.example.demo.拉卡拉;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.example.demo.bean.A2_bean;
import com.example.demo.bean.交易明细;
import com.example.demo.bean.结算明细;
import com.example.demo.utils.DateUtils;

import java.util.Date;
import java.util.List;

public class Test {

    public static final Integer MY_结算日期 = 1; //单位 天
    public static final float MY_结算金额 = 300;// 单位 元

    public static void main(String[] args) {
        main2();
        //      mainTest();
    }

    public static void main2() {
        String path="D:\\拉卡拉.xlsx";
        //通过sheet名获取
        ExcelReader reader = ExcelUtil.getReader(FileUtil.file(path), "交易明细");

        List<交易明细> list = reader.readAll(交易明细.class);
        //=================
        ExcelReader reader2 = ExcelUtil.getReader(FileUtil.file(path), "结算明细");
        List<结算明细> list2 = reader2.readAll(结算明细.class);
        formatList结算明细(list, list2);
        excelWriterBean3(list2);
    }

    public static void formatList结算明细(List<交易明细> list, List<结算明细> list2) {
        for (结算明细 bean2 : list2) {

            if ("昊古汇鑫商贸".equals(bean2.get商户名称())) {
                System.out.println(bean2.get商户名称());
            }


            String 备注 = "";
            // 20230525
            String 结算日期End = bean2.get结算日期();
            if (null == 结算日期End || "".equals(结算日期End)) {
                continue;
            }

            // String 结算日期Start=null;//结算日期End-1;
            Date 结算日期EndDate = DateUtil.parse(结算日期End, "yyyyMMdd");

            // 20230524
            String 结算日期Start = DateUtils.getBeforeDate2(结算日期EndDate, -MY_结算日期);
            Date 结算日期StartDate = DateUtil.parse(结算日期Start, "yyyyMMdd");

            String 结算金额Start = bean2.get结算金额();
            double 结算金额StartDouble = Double.parseDouble(bean2.get结算金额());
            // String 结算金额End =结算金额End+200;
            double 结算金额EndDouble = NumberUtil.add(Double.parseDouble(结算金额Start), MY_结算金额);//3
            for (交易明细 bean : list) {
                if ("昊古汇鑫商贸".equals(bean.get商户名称())) {
                    System.out.println(bean.get商户名称());
                }


                String 公司人员 = bean.get公司人员();
                if ("李宁宁".equals(公司人员)){
                    System.out.println(公司人员);
                }

                String 投资人 = bean.get投资人();
                if ("李宁宁".equals(投资人)){
                    System.out.println(投资人);
                }
                // 2023/5/26
                String 交易时间 = bean.get交易时间();
                if (交易时间 == null || "".equals(交易时间)) {
                    continue;
                }
                String format = "yyyy/MM/dd";
                if (交易时间.contains("-")) {
                    //   System.out.println(交易时间);
                    format = "yyyy-MM-dd";
                }
                Date 交易时间Date = DateUtil.parse(交易时间, format);

                String 交易金额 = bean.get交易金额();
                double 交易金额Double = Double.parseDouble(交易金额);

                int compareResult1 = DateUtil.compare(交易时间Date, 结算日期StartDate);
                int compareResult2 = DateUtil.compare(交易时间Date, 结算日期EndDate);
                boolean compareDate = (compareResult1 >= 0 && compareResult2 <= 0);
                boolean compareJE = (交易金额Double >= 结算金额StartDouble && 交易金额Double <= 结算金额EndDouble);
                if (bean2.get结算账号().equals(bean.get结算账户())
                        && compareDate == true
                        && compareJE == true) {
                    String result="不是公司人员，也不是投资人";
                    if (!公司人员.contains("#")){
                        result=公司人员+"(公司人员)";
                    }else if (!投资人.contains("#")){
                        result=投资人+"(投资人)";
                    }
                    备注 =result;
                    break;
                }
            }
            bean2.set备注(备注);
        }
    }

    public static void excelWriterBean3(List<结算明细> rows) {

        // 通过工具类创建writer
        ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest51.xlsx");
        // 合并单元格后的标题行，使用默认标题样式
        // writer.merge(4, "一班成绩单");
        // 一次性写出内容，使用默认样式，强制输出标题
        writer.write(rows, true);
        // 关闭writer，释放内存
        writer.close();
    }


    public static void mainTest() {
        ExcelReader reader;
        //通过sheet编号获取
        //reader = ExcelUtil.getReader(FileUtil.file("d:/test.xlsx"), 0);
        //通过sheet名获取
        reader = ExcelUtil.getReader(FileUtil.file("d:/test.xlsx"), "sheet2");
        System.out.println(reader);
        System.out.println(JSONUtil.toJsonStr(reader));

        List<A2_bean> list = reader.readAll(A2_bean.class);
        System.out.println(list);
        for (A2_bean bean : list) {
            System.out.println(JSONUtil.toJsonStr(bean));
        }
    }


}
